x86-64/mmcfg: fix pci_mmcfg_arch_free()
authorJan Beulich <jbeulich@novell.com>
Fri, 1 Jul 2011 19:44:21 +0000 (20:44 +0100)
committerJan Beulich <jbeulich@novell.com>
Fri, 1 Jul 2011 19:44:21 +0000 (20:44 +0100)
While only used on error paths so far, it should still actually do
something (which iounmap(), being an empty stub, doesn't).

Signed-off-by: Jan Beulich <jbeulich@novell.com>
xen/arch/x86/x86_64/mmconfig_64.c

index fc5cca847eba837761e56b3ac468ba80f13facde..c17acf9ef961dd32f1ba28fdb0d412ee94206b7e 100644 (file)
@@ -166,7 +166,12 @@ void __init pci_mmcfg_arch_free(void)
 
     for (i = 0; i < pci_mmcfg_config_num; ++i) {
         if (pci_mmcfg_virt[i].virt) {
-            iounmap(pci_mmcfg_virt[i].virt);
+            unsigned long size;
+            const struct acpi_mcfg_allocation *cfg = pci_mmcfg_virt[i].cfg;
+
+            size = (cfg->end_bus_number - cfg->start_bus_number + 1) << 20;
+            destroy_xen_mappings((unsigned long)pci_mmcfg_virt[i].virt,
+                                 (unsigned long)pci_mmcfg_virt[i].virt + size);
             pci_mmcfg_virt[i].virt = NULL;
             pci_mmcfg_virt[i].cfg = NULL;
         }